"use strict";
// 布尔值 true/false
// let isDone: boolean = true
// console.log(isDone)
// 数字
// let age: number = 18
// let age: number = 0xf00d
// console.log(age)
// 字符串
// let myName: string = 'bob'
// let age: number = 12
// console.log(`my name is ${myName}, I'am ${age} years old.`)
// 数组
// 声明方式一
// let list: number[] = [1, 2, 3]
// // 声明方式二：数组泛型
// let list2: Array<number> = [1, 2, 3]
// console.log(list)
// console.log(list2)
// 元祖 Tuple
// let x: [string, number] = ['hello', 100]
// console.log(x)
// x[3] = 'hello' // 报错
// console.log(x[3].toString()) // 报错
// 枚举
// enum Color { Red, Green, Blue }
// let c: Color = Color.Green
// console.log(c) // 1
// 手动赋值
// enum Color { Red = 1, Green, Blue }
// let c: Color = Color.Green
// console.log(c) // 2
// enum Color { Red = 1, Green = 3, Blue = 5 }
// let c: Color = Color.Green
// console.log(c) // 3
// 由枚举的值得到它的名字
// enum Color { Red = 1, Green, Blue }
// let c: string = Color[2]
// console.log(c) // Green
// Any
// let noSure: any = 4
// noSure = 'maybe'
// noSure = true
// console.log(noSure)
// noSure.ifItExists()
// noSure.toFixed()
// let prettySure: Object = 4
// prettySure.toFixed() // 报错
// let list: any[] = [1, '2', true]
// list[1] = 200
// console.log(list)
// Void
// function warnUser(): void {
//   console.log('没有返回值')
// }
// warnUser()
// 只能赋值 null 或 undefined
// let unusable: void = undefined
// null 和 undefined
// let u: undefined = undefined
// let n: null = null
// console.log(u, n)
// let age: number = undefined
// let names: string = null
// let age: number | null | undefined = 1
// age = null
// never
// let hh: never
// console.log(hh)
// 返回 never 的函数必须存在无法达到的终点
function error(message) {
    throw new Error(message);
}
const obj = "age";
// console.log(keyof Todo)
